from flask import session,current_app,g

from info.models import User


# 自定义过滤器
def index_filter(index):

    if index == 1:
        return "first"
    elif index == 2:
        return "second"
    elif index == 3:
        return "third"
    else:
        return ""


# 装饰器：函数嵌套，本质是闭包，作用：在不改变原有功能代码的情况下，添加新的功能。
# 让被装饰的函数的属性不发生变化
# import functools
def login_required(f):
    # @functools.wraps(f)
    def wrapper(*args,**kwargs):
        user_id = session.get('user_id')
        user = None
        # 如果有user_id,查询mysql
        try:
            user = User.query.filter_by(id=user_id).first()
        except Exception as e:
            current_app.logger.error(e)
        # 把查询到的数据，传给被装饰的函数
        # 在请求过程中存在，请求结束会自动销毁，临时存储数据，和request、session一样，
        g.user = user
        return f(*args,**kwargs)
    wrapper.__name__ = f.__name__
    return wrapper